CHESTNUT CODE IS POETRY

强化学习:如何理解价值、优势、奖励和回报

在强化学习(马尔可夫决策链,MDP)的框架下,Agent在环境中交互形成轨迹,每个轨迹点包括了状态、动作、奖励。我们有轨迹:

$$ \tau = (s_0, a_0, r_0, s_1, a_1, r_1, \ldots, s_T, a_T, r_T) $$

奖励可以理解为在某个时刻Agent采取某个状态某个动作后获得的即时奖励,是“瞬时”的奖励,不包含任何历史或者未来信息。

回报

回报既有瞬时的奖励也涵盖了未来的奖励:

$$ G_t = \sum_{t'=t}^T \gamma^{t'-t} r_{t'} $$

其中,$\gamma$是折扣因子,$r_{t'}$是在时间$t'$获得的奖励。

至于为什么需要折扣因子,从数学角度来看,我们希望回报是收敛的,如果没有折扣因子会导致$t$无穷大的时候奖励无穷大(我们在强化学习:1. 策略梯度算法对这个问题进行了简单的讨论);从经验角度来看,折扣因子可以使得Agent对于未来的奖励有一个衰减的权重,在当下收益和未来收益之间做平衡。

在强化学习训练中,我们更希望Agent能够获得更高“回报”,而非瞬时的“奖励”。但是,回报虽好,也存在以下问题:

  1. 回报不稳定,方差很大。回报是一个随机变量,他被环境噪声或状态转移概率等因素影响。
  2. 回报依赖于未来的奖励,因此训练的时候需要采样整个轨迹。

因此,在策略梯度方法发展后续,用优势函数(回报的期望,是固定值,与轨迹无关)来代替回报进行优化:

$$ \nabla J(\theta) \approx \frac{1}{N} \sum_{i=1}^{N} \sum_{t=0}^{T} \nabla \log \pi_\theta(a_t | s_t) G_t \\ \rightarrow \nabla J(\theta) \approx \frac{1}{N} \sum_{i=1}^{N} \sum_{t=0}^{T} \nabla \log \pi_\theta(a_t | s_t) A_t(s,a) $$

对于这个公式的由来,可以参考强化学习:1. 策略梯度算法

价值函数

价值函数分为:状态价值函数$V(s)$和动作-状态价值函数$Q(s, a)$

状态价值函数$V(s)$表示在状态$s$下,Agent能够获得的回报的期望:

$$ V(s) = \mathbb{E}[G_t | s_t = s] $$

动作-状态价值函数$Q(s, a)$表示在状态$s$下,采取动作$a$能够获得的回报的期望:

$$ Q(s, a) = \mathbb{E}[G_t | s_t = s, a_t = a] $$

价值函数代表了当前状态下的回报期望,是确定的值,不是随机变量。

优势函数

优势函数$A(s, a)$表示在状态$s$下,采取动作$a$相比其他动作的优势:

$$ A(s, a) = Q(s, a) - V(s) $$

对于某个状态下,所有动作对参数的梯度贡献的均值:

$$ \sum_a \nabla J(\theta;a,s) = \sum_{a} \pi_\theta(a|s) (Q(s,a) -V(s)) = \sum_{a}\pi_\theta(a|s) Q(s,a) - V(s) \sum_{a} \pi_\theta(a|s) \\ = V(s) - V(s) = 0 $$

因此,在某个状态下,总会有好的动作和坏的动作。这样相对性的评估,就能够使得策略梯度方法更加稳定。而且因为优势函数$A(s,a)$只由当前状态和动作决定,所以在训练时,可以不用采样整个轨迹,增加采样效率。

但是,计算优势函数会面临很大的挑战:计算回报的期望是不可能的,也就是价值函数是不可计算的。因此在后续出现了多种优势函数估计的方法。

优势函数估计

蒙特卡洛(MC)估计

时序差分(TD)估计

广泛优势(GAE)估计

Return to Blog